﻿#version 330 core
layout (triangles) in;
layout (line_strip, max_vertices = 6) out;

in vec3 vNormal[];

// 控制法向长度
const float MAGNITUDE = 0.4;

uniform mat4 projection;

void GenerateLine(int index)
{
    // 绘制原本的顶点
    gl_Position = projection * gl_in[index].gl_Position;
    EmitVertex();

    // 绘制沿着法向移动后的顶点
    gl_Position = projection * (gl_in[index].gl_Position + 
                                vec4(vNormal[index], 0.0) * MAGNITUDE);
    EmitVertex();

    EndPrimitive();
}

void main()
{
    GenerateLine(0); // 第一个顶点法线
    GenerateLine(1); // 第二个顶点法线
    GenerateLine(2); // 第三个顶点法线
}